#define _CRT_SECURE_NO_WARNINGS 1

//#include <iostream>
//#include <vector>
//#include <unordered_map>
//using namespace std;
//
//int n = 0;
//int m = 0;
//
//
//int main()
//{
//	cin >> n >> m;
//	vector<int> v1(n);
//	vector<int> v2(m);
//	unordered_map<int, int> hash;
//	for (int i = 0; i < n; ++i)
//	{
//		cin >> v1[i];
//		if(!hash.count(v1[i]))
//			hash[v1[i]] = i + 1;
//	}
//
//	for (int i = 0; i < m; ++i)
//		cin >> v2[i];
//
//	for (auto e : v2)
//	{
//		if (hash.count(e))
//		{
//			cout << hash[e] << ' ';
//		}
//		else
//			cout << -1 << ' ';
//	}
//
//	return 0;
//}


//#include <iostream>
//#include <vector>
//using namespace std;
//
//int n = 0;
//int m = 0;
//int arr[1000010] = { 0 };
//
//int find(int num)
//{
//	int left = 0;
//	int right = n-1;
//
//	while (left < right)
//	{
//		int mid = left + (right - left) / 2;
//		if (arr[mid] >= num)
//			right = mid;
//		else if (arr[mid] < num)
//			left = mid + 1;
//
//	}
//
//	if (arr[left] == num)
//		return left + 1;
//
//	return -1;
//}
//
//int main()
//{
//	cin >> n >> m;
//
//	for (int i = 0; i < n; ++i) cin >> arr[i];
//
//	for (int i = 0; i < m; ++i)
//	{
//		int num = 0; cin >> num;
//		int ans = find(num);
//		cout << ans << ' ';
//	}
//
//
//	return 0;
//}

#include <iostream>
#include <algorithm>
using namespace std;

int m, n;
int arr_m[1000010] = { 0 };
int arr_n[1000010] = { 0 };

int find(int num)
{
	int left = 0;
	int right = m - 1;
	int ret = 0;
	while (left < right)
	{
		int mid = left + (right - left) / 2;
		if (num >= arr_m[mid])
		{
			left = mid + 1;
		}
		else if(num < arr_m[mid])
		{
			right = mid;
		}
	}
	if (num <= arr_m[left])
		ret = arr_m[left] - num;
	else
		ret = min(abs(num - arr_m[left-1]), abs(num - arr_m[left]));

	return ret;
}

int main()
{
	cin >> m >> n;

	for (int i = 0; i < m; ++i) cin >> arr_m[i];
	for (int i = 0; i < n; ++i) cin >> arr_n[i];

	sort(arr_m, arr_m + m);

	int ret = 0;
	for (int i = 0; i < n; ++i)
	{
		ret = find(arr_n[i]);	
	}

	cout << ret;

	return 0;
}